C 언어 정적 변수

IT 위키

C 언어 정적 변수(Static Variable in C, 靜的變數)는 선언된 블록 내에서만 접근할 수 있지만, 프로그램 실행 동안 값이 유지되는 저장 클래스의 일종이다.

1 개요[편집 | 원본 편집]

정적 변수는 함수 내부 또는 파일 범위에서 선언될 수 있으며, static 키워드를 통해 선언된다. 함수 내에서 선언된 정적 변수는 해당 함수가 호출될 때마다 초기화되지 않고, 이전 호출에서 변경된 값을 유지한다. 이로 인해 상태 유지, 호출 횟수 추적, 전역 변수 대체 등의 목적으로 활용된다.

2 정적 변수의 종류[편집 | 원본 편집]

  • 함수 내부 정적 변수: 지역 변수처럼 보이지만, 값이 함수 종료 후에도 유지됨
  • 파일 범위 정적 변수: 외부 파일에서 접근할 수 없는 전역 변수 역할

3 함수 내부 정적 변수[편집 | 원본 편집]

static 키워드는 함수 안의 지역 변수에 적용되어 함수가 여러 번 호출되어도 변수가 소멸되지 않게 한다.

void counter() {
    static int count = 0;
    count++;
    printf("%d\n", count);
}

int main() {
    counter(); // 출력: 1
    counter(); // 출력: 2
    counter(); // 출력: 3
}

4 파일 범위 정적 변수[편집 | 원본 편집]

함수 밖에서 선언된 static 변수는 해당 파일 내에서만 접근 가능하며, 링크 단위 보호를 위해 사용된다.

static int globalCount = 0;

void increase() {
    globalCount++;
}

이 경우 globalCount는 다른 파일에서 참조할 수 없다.

5 정적 변수와 초기화[편집 | 원본 편집]

  • 정적 변수는 프로그램 시작 시 자동으로 초기화됨 (값이 명시되지 않으면 0으로 초기화됨)
  • 초기화는 한 번만 실행됨

6 주요 특징 요약[편집 | 원본 편집]

  • 메모리: 데이터 영역(static storage)에 저장됨
  • 생존 기간: 프로그램 종료 시까지 유지
  • 접근 범위: 선언된 블록 또는 파일 내에서만 유효
  • 초기화: 한 번만 수행, 생략 시 0으로 초기화

7 사용 예시[편집 | 원본 편집]

  • 함수 호출 횟수 추적
  • 재귀 함수 내 상태 유지
  • 외부 접근 차단된 전역 변수 구현

8 관련 키워드[편집 | 원본 편집]

  • static
  • 지역 변수
  • 전역 변수
  • 스코프
  • 저장 클래스(Storage Class)

9 같이 보기[편집 | 원본 편집]

10 참고 문헌[편집 | 원본 편집]

  • Brian W. Kernighan, Dennis M. Ritchie, The C Programming Language, Prentice Hall, 1988.
  • 한동윤, 명품 C 언어 프로젝트, 생능출판사, 2020.

11 각주[편집 | 원본 편집]